home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / ADA / GNAT / !gcc / adainc / 2 / ads / a-swmwco < prev    next >
Text File  |  1996-02-12  |  18KB  |  410 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT RUNTIME COMPONENTS                          --
  4. --                                                                          --
  5. -- A D A . S T R I N G S . W I D E _ M A P S . W I D E _ C O N S T A N T S  --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.13 $                             --
  10. --                                                                          --
  11. -- This specification is adapted from the Ada Reference Manual for use with --
  12. -- GNAT.  In accordance with the copyright of that document, you can freely --
  13. -- copy and modify this specification,  provided that if you redistribute a --
  14. -- modified version,  any changes that you have made are clearly indicated. --
  15. --                                                                          --
  16. ------------------------------------------------------------------------------
  17.  
  18.  
  19. with Ada.Characters.Wide_Latin_1;
  20.  
  21. package Ada.Strings.Wide_Maps.Wide_Constants is
  22. pragma Preelaborate (Wide_Constants);
  23.  
  24.    package W renames Ada.Characters.Wide_Latin_1;
  25.  
  26.    Control_Set           : constant Wide_Maps.Wide_Character_Set;
  27.    Graphic_Set           : constant Wide_Maps.Wide_Character_Set;
  28.    Letter_Set            : constant Wide_Maps.Wide_Character_Set;
  29.    Lower_Set             : constant Wide_Maps.Wide_Character_Set;
  30.    Upper_Set             : constant Wide_Maps.Wide_Character_Set;
  31.    Basic_Set             : constant Wide_Maps.Wide_Character_Set;
  32.    Decimal_Digit_Set     : constant Wide_Maps.Wide_Character_Set;
  33.    Hexadecimal_Digit_Set : constant Wide_Maps.Wide_Character_Set;
  34.    Alphanumeric_Set      : constant Wide_Maps.Wide_Character_Set;
  35.    Special_Graphic_Set   : constant Wide_Maps.Wide_Character_Set;
  36.    ISO_646_Set           : constant Wide_Maps.Wide_Character_Set;
  37.    Character_Set         : constant Wide_Maps.Wide_Character_Set;
  38.  
  39.    Lower_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;
  40.    --  Maps to lower case for letters, else identity
  41.  
  42.    Upper_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;
  43.    --  Maps to upper case for letters, else identity
  44.  
  45.    Basic_Map             : constant Wide_Maps.Wide_Character_Mapping;
  46.    --  Maps to basic letter for letters, else identity
  47.  
  48. private
  49.    subtype WC is Wide_Character;
  50.  
  51.    Control_Ranges           : aliased constant Wide_Character_Ranges :=
  52.      ((W.NUL, W.US),
  53.       (W.DEL, W.APC));
  54.  
  55.    Control_Set              : constant Wide_Character_Set            :=
  56.                                 Control_Ranges'Access;
  57.  
  58.    Graphic_Ranges           : aliased constant Wide_Character_Ranges :=
  59.      ((W.' ',          W.Tilde),
  60.       (WC'Val (256), WC'Last));
  61.  
  62.    Graphic_Set              : constant Wide_Character_Set            :=
  63.                                 Graphic_Ranges'Access;
  64.  
  65.    Letter_Ranges            : aliased constant Wide_Character_Ranges :=
  66.      ((W.'A',                 W.'Z'),
  67.       (W.'a',                 W.'z'),
  68.       (W.UC_A_Grave,          W.UC_O_Diaeresis),
  69.       (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
  70.       (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
  71.  
  72.    Letter_Set               : constant Wide_Character_Set            :=
  73.                                 Letter_Ranges'Access;
  74.  
  75.    Lower_Ranges             : aliased constant Wide_Character_Ranges :=
  76.      (1 => (W.'a',                 W.'z'),
  77.       2 => (W.LC_German_Sharp_S,   W.LC_O_Diaeresis),
  78.       3 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
  79.  
  80.    Lower_Set                : constant Wide_Character_Set            :=
  81.                                 Lower_Ranges'Access;
  82.  
  83.    Upper_Ranges             : aliased constant Wide_Character_Ranges :=
  84.      (1 => (W.'A',                 W.'Z'),
  85.       2 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
  86.       3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
  87.  
  88.    Upper_Set                : constant Wide_Character_Set            :=
  89.                                 Upper_Ranges'Access;
  90.  
  91.    Basic_Ranges             : aliased constant Wide_Character_Ranges :=
  92.      (1 => (W.'A',                 W.'Z'),
  93.       2 => (W.'a',                 W.'z'),
  94.       3 => (W.UC_AE_Diphthong,     W.UC_AE_Diphthong),
  95.       4 => (W.LC_AE_Diphthong,     W.LC_AE_Diphthong),
  96.       5 => (W.LC_German_Sharp_S,   W.LC_German_Sharp_S),
  97.       6 => (W.UC_Icelandic_Thorn,  W.UC_Icelandic_Thorn),
  98.       7 => (W.LC_Icelandic_Thorn,  W.LC_Icelandic_Thorn),
  99.       8 => (W.UC_Icelandic_Eth,    W.UC_Icelandic_Eth),
  100.       9 => (W.LC_Icelandic_Eth,    W.LC_Icelandic_Eth));
  101.  
  102.    Basic_Set                : constant Wide_Character_Set            :=
  103.                                 Basic_Ranges'Access;
  104.  
  105.    Decimal_Digit_Ranges     : aliased constant Wide_Character_Ranges :=
  106.      (1 => (W.'0', W.'9'));
  107.  
  108.    Decimal_Digit_Set        : constant Wide_Character_Set :=
  109.                                 Decimal_Digit_Ranges'Access;
  110.  
  111.    Hexadecimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
  112.      (1 => (W.'0', W.'9'),
  113.       2 => (W.'A', W.'F'),
  114.       3 => (W.'a', W.'f'));
  115.  
  116.    Hexadecimal_Digit_Set    : constant Wide_Character_Set :=
  117.                                 Hexadecimal_Digit_Ranges'Access;
  118.  
  119.    Alphanumeric_Ranges      : aliased constant Wide_Character_Ranges :=
  120.      (1 => (W.'0',                 W.'9'),
  121.       2 => (W.'A',                 W.'Z'),
  122.       3 => (W.'a',                 W.'z'),
  123.       4 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
  124.       5 => (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
  125.       6 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
  126.  
  127.    Alphanumeric_Set         : constant Wide_Character_Set            :=
  128.                                 Alphanumeric_Ranges'Access;
  129.  
  130.    Special_Graphic_Ranges   : aliased constant Wide_Character_Ranges :=
  131.      (1 => (Wide_Space,            W.Solidus),
  132.       2 => (W.Colon,               W.Commercial_At),
  133.       3 => (W.Left_Square_Bracket, W.Grave),
  134.       4 => (W.Left_Curly_Bracket,  W.Tilde),
  135.       5 => (W.No_Break_Space,      W.Inverted_Question),
  136.       6 => (W.Multiplication_Sign, W.Multiplication_Sign),
  137.       7 => (W.Division_Sign,       W.Division_Sign));
  138.  
  139.    Special_Graphic_Set      : constant Wide_Character_Set            :=
  140.                                 Special_Graphic_Ranges'Access;
  141.  
  142.    ISO_646_Ranges           : aliased constant Wide_Character_Ranges :=
  143.      (1 => (W.NUL, W.DEL));
  144.  
  145.    ISO_646_Set              : constant Wide_Character_Set            :=
  146.                                 ISO_646_Ranges'Access;
  147.  
  148.    Character_Ranges         : aliased constant Wide_Character_Ranges :=
  149.      (1 => (W.NUL, WC'Val (255)));
  150.  
  151.    Character_Set            : constant Wide_Character_Set :=
  152.                                 Character_Ranges'Access;
  153.  
  154.    Lower_From : aliased constant Wide_Character_Sequence :=
  155.      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"    &
  156.       W.UC_A_Grave                   &
  157.       W.UC_A_Acute                   &
  158.       W.UC_A_Circumflex              &
  159.       W.UC_A_Tilde                   &
  160.       W.UC_A_Diaeresis               &
  161.       W.UC_A_Ring                    &
  162.       W.UC_AE_Diphthong              &
  163.       W.UC_C_Cedilla                 &
  164.       W.UC_E_Grave                   &
  165.       W.UC_E_Acute                   &
  166.       W.UC_E_Circumflex              &
  167.       W.UC_E_Diaeresis               &
  168.       W.UC_I_Grave                   &
  169.       W.UC_I_Acute                   &
  170.       W.UC_I_Circumflex              &
  171.       W.UC_I_Diaeresis               &
  172.       W.UC_Icelandic_Eth             &
  173.       W.UC_N_Tilde                   &
  174.       W.UC_O_Grave                   &
  175.       W.UC_O_Acute                   &
  176.       W.UC_O_Circumflex              &
  177.       W.UC_O_Tilde                   &
  178.       W.UC_O_Diaeresis               &
  179.       W.UC_O_Oblique_Stroke          &
  180.       W.UC_U_Grave                   &
  181.       W.UC_U_Acute                   &
  182.       W.UC_U_Circumflex              &
  183.       W.UC_U_Diaeresis               &
  184.       W.UC_Y_Acute                   &
  185.       W.UC_Icelandic_Thorn;
  186.  
  187.    Lower_To : aliased constant Wide_Character_Sequence :=
  188.      "abcdefghijklmnopqrstuvwxyz"    &
  189.       W.LC_A_Grave                   &
  190.       W.LC_A_Acute                   &
  191.       W.LC_A_Circumflex              &
  192.       W.LC_A_Tilde                   &
  193.       W.LC_A_Diaeresis               &
  194.       W.LC_A_Ring                    &
  195.       W.LC_AE_Diphthong              &
  196.       W.LC_C_Cedilla                 &
  197.       W.LC_E_Grave                   &
  198.       W.LC_E_Acute                   &
  199.       W.LC_E_Circumflex              &
  200.       W.LC_E_Diaeresis               &
  201.       W.LC_I_Grave                   &
  202.       W.LC_I_Acute                   &
  203.       W.LC_I_Circumflex              &
  204.       W.LC_I_Diaeresis               &
  205.       W.LC_Icelandic_Eth             &
  206.       W.LC_N_Tilde                   &
  207.       W.LC_O_Grave                   &
  208.       W.LC_O_Acute                   &
  209.       W.LC_O_Circumflex              &
  210.       W.LC_O_Tilde                   &
  211.       W.LC_O_Diaeresis               &
  212.       W.LC_O_Oblique_Stroke          &
  213.       W.LC_U_Grave                   &
  214.       W.LC_U_Acute                   &
  215.       W.LC_U_Circumflex              &
  216.       W.LC_U_Diaeresis               &
  217.       W.LC_Y_Acute                   &
  218.       W.LC_Icelandic_Thorn;
  219.  
  220.    Lower_Case_Map : constant Wide_Character_Mapping :=
  221.      Wide_Character_Mapping' (Lower_From'Access, Lower_To'Access);
  222.  
  223.    Upper_From : aliased constant Wide_Character_Sequence :=
  224.      "abcdefghijklmnopqrstuvwxyz"    &
  225.       W.LC_A_Grave                   &
  226.       W.LC_A_Acute                   &
  227.       W.LC_A_Circumflex              &
  228.       W.LC_A_Tilde                   &
  229.       W.LC_A_Diaeresis               &
  230.       W.LC_A_Ring                    &
  231.       W.LC_AE_Diphthong              &
  232.       W.LC_C_Cedilla                 &
  233.       W.LC_E_Grave                   &
  234.       W.LC_E_Acute                   &
  235.       W.LC_E_Circumflex              &
  236.       W.LC_E_Diaeresis               &
  237.       W.LC_I_Grave                   &
  238.       W.LC_I_Acute                   &
  239.       W.LC_I_Circumflex              &
  240.       W.LC_I_Diaeresis               &
  241.       W.LC_Icelandic_Eth             &
  242.       W.LC_N_Tilde                   &
  243.       W.LC_O_Grave                   &
  244.       W.LC_O_Acute                   &
  245.       W.LC_O_Circumflex              &
  246.       W.LC_O_Tilde                   &
  247.       W.LC_O_Diaeresis               &
  248.       W.LC_O_Oblique_Stroke          &
  249.       W.LC_U_Grave                   &
  250.       W.LC_U_Acute                   &
  251.       W.LC_U_Circumflex              &
  252.       W.LC_U_Diaeresis               &
  253.       W.LC_Y_Acute                   &
  254.       W.LC_Icelandic_Thorn;
  255.  
  256.    Upper_To : aliased constant Wide_Character_Sequence :=
  257.      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"    &
  258.       W.UC_A_Grave                   &
  259.       W.UC_A_Acute                   &
  260.       W.UC_A_Circumflex              &
  261.       W.UC_A_Tilde                   &
  262.       W.UC_A_Diaeresis               &
  263.       W.UC_A_Ring                    &
  264.       W.UC_AE_Diphthong              &
  265.       W.UC_C_Cedilla                 &
  266.       W.UC_E_Grave                   &
  267.       W.UC_E_Acute                   &
  268.       W.UC_E_Circumflex              &
  269.       W.UC_E_Diaeresis               &
  270.       W.UC_I_Grave                   &
  271.       W.UC_I_Acute                   &
  272.       W.UC_I_Circumflex              &
  273.       W.UC_I_Diaeresis               &
  274.       W.UC_Icelandic_Eth             &
  275.       W.UC_N_Tilde                   &
  276.       W.UC_O_Grave                   &
  277.       W.UC_O_Acute                   &
  278.       W.UC_O_Circumflex              &
  279.       W.UC_O_Tilde                   &
  280.       W.UC_O_Diaeresis               &
  281.       W.UC_O_Oblique_Stroke          &
  282.       W.UC_U_Grave                   &
  283.       W.UC_U_Acute                   &
  284.       W.UC_U_Circumflex              &
  285.       W.UC_U_Diaeresis               &
  286.       W.UC_Y_Acute                   &
  287.       W.UC_Icelandic_Thorn;
  288.  
  289.    Upper_Case_Map : constant Wide_Character_Mapping :=
  290.      Wide_Character_Mapping' (Upper_From'Access, Upper_To'Access);
  291.  
  292.    Basic_From : aliased constant Wide_Character_Sequence :=
  293.       W.UC_A_Grave                    &
  294.       W.UC_A_Acute                    &
  295.       W.UC_A_Circumflex               &
  296.       W.UC_A_Tilde                    &
  297.       W.UC_A_Diaeresis                &
  298.       W.UC_A_Ring                     &
  299.       W.UC_C_Cedilla                  &
  300.       W.UC_E_Grave                    &
  301.       W.UC_E_Acute                    &
  302.       W.UC_E_Circumflex               &
  303.       W.UC_E_Diaeresis                &
  304.       W.UC_I_Grave                    &
  305.       W.UC_I_Acute                    &
  306.       W.UC_I_Circumflex               &
  307.       W.UC_I_Diaeresis                &
  308.       W.UC_N_Tilde                    &
  309.       W.UC_O_Grave                    &
  310.       W.UC_O_Acute                    &
  311.       W.UC_O_Circumflex               &
  312.       W.UC_O_Tilde                    &
  313.       W.UC_O_Diaeresis                &
  314.       W.UC_O_Oblique_Stroke           &
  315.       W.UC_U_Grave                    &
  316.       W.UC_U_Acute                    &
  317.       W.UC_U_Circumflex               &
  318.       W.UC_U_Diaeresis                &
  319.       W.UC_Y_Acute                    &
  320.       W.LC_A_Grave                    &
  321.       W.LC_A_Acute                    &
  322.       W.LC_A_Circumflex               &
  323.       W.LC_A_Tilde                    &
  324.       W.LC_A_Diaeresis                &
  325.       W.LC_A_Ring                     &
  326.       W.LC_C_Cedilla                  &
  327.       W.LC_E_Grave                    &
  328.       W.LC_E_Acute                    &
  329.       W.LC_E_Circumflex               &
  330.       W.LC_E_Diaeresis                &
  331.       W.LC_I_Grave                    &
  332.       W.LC_I_Acute                    &
  333.       W.LC_I_Circumflex               &
  334.       W.LC_I_Diaeresis                &
  335.       W.LC_N_Tilde                    &
  336.       W.LC_O_Grave                    &
  337.       W.LC_O_Acute                    &
  338.       W.LC_O_Circumflex               &
  339.       W.LC_O_Tilde                    &
  340.       W.LC_O_Diaeresis                &
  341.       W.LC_O_Oblique_Stroke           &
  342.       W.LC_U_Grave                    &
  343.       W.LC_U_Acute                    &
  344.       W.LC_U_Circumflex               &
  345.       W.LC_U_Diaeresis                &
  346.       W.LC_Y_Acute                    &
  347.       W.LC_Y_Diaeresis;
  348.  
  349.    Basic_To : aliased constant Wide_Character_Sequence :=
  350.       'A'                           &  -- UC_A_Grave
  351.       'A'                           &  -- UC_A_Acute
  352.       'A'                           &  -- UC_A_Circumflex
  353.       'A'                           &  -- UC_A_Tilde
  354.       'A'                           &  -- UC_A_Diaeresis
  355.       'A'                           &  -- UC_A_Ring
  356.       'C'                           &  -- UC_C_Cedilla
  357.       'E'                           &  -- UC_E_Grave
  358.       'E'                           &  -- UC_E_Acute
  359.       'E'                           &  -- UC_E_Circumflex
  360.       'E'                           &  -- UC_E_Diaeresis
  361.       'I'                           &  -- UC_I_Grave
  362.       'I'                           &  -- UC_I_Acute
  363.       'I'                           &  -- UC_I_Circumflex
  364.       'I'                           &  -- UC_I_Diaeresis
  365.       'N'                           &  -- UC_N_Tilde
  366.       'O'                           &  -- UC_O_Grave
  367.       'O'                           &  -- UC_O_Acute
  368.       'O'                           &  -- UC_O_Circumflex
  369.       'O'                           &  -- UC_O_Tilde
  370.       'O'                           &  -- UC_O_Diaeresis
  371.       'O'                           &  -- UC_O_Oblique_Stroke
  372.       'U'                           &  -- UC_U_Grave
  373.       'U'                           &  -- UC_U_Acute
  374.       'U'                           &  -- UC_U_Circumflex
  375.       'U'                           &  -- UC_U_Diaeresis
  376.       'Y'                           &  -- UC_Y_Acute
  377.       'a'                           &  -- LC_A_Grave
  378.       'a'                           &  -- LC_A_Acute
  379.       'a'                           &  -- LC_A_Circumflex
  380.       'a'                           &  -- LC_A_Tilde
  381.       'a'                           &  -- LC_A_Diaeresis
  382.       'a'                           &  -- LC_A_Ring
  383.       'c'                           &  -- LC_C_Cedilla
  384.       'e'                           &  -- LC_E_Grave
  385.       'e'                           &  -- LC_E_Acute
  386.       'e'                           &  -- LC_E_Circumflex
  387.       'e'                           &  -- LC_E_Diaeresis
  388.       'i'                           &  -- LC_I_Grave
  389.       'i'                           &  -- LC_I_Acute
  390.       'i'                           &  -- LC_I_Circumflex
  391.       'i'                           &  -- LC_I_Diaeresis
  392.       'n'                           &  -- LC_N_Tilde
  393.       'o'                           &  -- LC_O_Grave
  394.       'o'                           &  -- LC_O_Acute
  395.       'o'                           &  -- LC_O_Circumflex
  396.       'o'                           &  -- LC_O_Tilde
  397.       'o'                           &  -- LC_O_Diaeresis
  398.       'o'                           &  -- LC_O_Oblique_Stroke
  399.       'u'                           &  -- LC_U_Grave
  400.       'u'                           &  -- LC_U_Acute
  401.       'u'                           &  -- LC_U_Circumflex
  402.       'u'                           &  -- LC_U_Diaeresis
  403.       'y'                           &  -- LC_Y_Acute
  404.       'y';                             -- LC_Y_Diaeresis
  405.  
  406.    Basic_Map : constant Wide_Character_Mapping :=
  407.      Wide_Character_Mapping' (Basic_From'Access, Basic_To'Access);
  408.  
  409. end Ada.Strings.Wide_Maps.Wide_Constants;
  410.